/**
 * build_project
 * <p>
 * Copyright 2014 cayden.cn, Inc. All rights reserved.
 *
 * @author Administrator
 * @date 2021-06-18 14:39
 */
package com.cayden.config.boot;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 启动类核心注解,可以帮助省略很多配置文件
 * @author cayden
 * @date 2021-06-18 14:39
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan(basePackages = "com.cayden.*")
public @interface CaydenSpringbootApplication {
    /**
     * 系统名称
     * @return
     */
    String sysName();

    /**
     * 系统标题
     * @return
     */
    String sysTitle() default "";

    /**
     * 运行端口,默认为0
     * 可以通过当前参数进行端口配置
     * @return
     */
    int runningPort() default 0;

    /**
     * 枚举类,选择启动环境,后期这个可能会取消,
     * linux下利用shell命令注入参数进行配置
     * @return
     */
    Env environment();

    /**
     * 默认为 0,如果是0,在停止项目的时候,
     * 会自动调用关闭redis-server 的代码,如果需要调整为不关闭,可以讲参数调整为1
     * status : 0 开启自动关闭功能,1 关闭功能
     *
     * @return
     */
    int redisAutoClose() default 0;

    /**
     * 为了支持日志等基础属性,提供修改默认base_package的功能,
     * 默认路径为/var/log/webapps/
     * 可通过配置进行修改,详情请看test_module
     */
    String initBasePackage() default "/var/log/webapps/";

    /**
     * 对于mac os big sur 来说 /var 下的文件下不可访问，所以需要默认基础日志文件夹
     * @return
     */
    String enableInitBasePackage() default "false";

    /**
     * 需要排除的类，这里还未实现，暂未生效
     * @return
     */
    @AliasFor(annotation = EnableAutoConfiguration.class)
    Class<?>[] exclude() default {};

}
